As circuit density has increased, the various components of an electronic system may be integrated onto a single chip to form a system-on-a chip (SOC). The advances in circuit density enable an SOC to include multiple instantiations of a circuit module or hardware module. For example, an SOC for a smartphone may include a multi-core central processing unit (CPU), a digital signal processor (DSP) with a plurality of hardware threads, a graphics processing unit (GPU) including a plurality of algorithmic logic units (ALUs), a plurality of wireless local area network (WLAN) interfaces, a modern having several vector processing engines (VPEs), and multiple L2 cache on-chip memories. As used herein, the terms “hardware core” or “hardware module” are used interchangeably with regard to such multiple instantiations of the same SOC circuit.
An SOC will typically be configured with an operating system or some other type of host software application that will select a particular module from a group of the same hardware modules for a particular task. To enable such a selection, each hardware core in a group of similar hardware cores may be associated with a serial number or character that serves as identification (ID) or an address of the hardware module. The address may be based upon the geographical location of a hardware core on a die or its manufacturing order. Using the address, the operating system selects a particular hardware module from a group of such hardware modules for a particular task. For example, a conventional SOC 100 is shown in FIG. 1 that includes an operating system 105. SOC 100 includes four hardware modules of the same type, including a unit 0, a unit 1, a unit 2, and a unit 3. As discussed above, the hardware modules may comprise a group of ALUs, processor cores, VPEs, and so on. Ideally, each hardware module should have the same characteristics and performance as do the remaining hardware modules in the group. But it is common for a group of identical hardware modules to show considerable variation in their performance and properties, particularly in high-density SOCs. For example, even if the hardware modules are directly adjacent to one another on the SOC's die, the die itself has semiconductor process variations that cause identical circuits to behave differently. Moreover, the die may have temperature or voltage variations at the different locations for the hardware modules that will also affect their performance.
An example variable performance parameter for the hardware modules is their leakage current. The leakage current from each hardware module is typically a significant factor with regard to power consumption. But the degree of leakage may vary considerably from module to module due to process, voltage, and temperature variations across the die. Moreover, leakage current is also a function of the hardware module's temperature. As the temperature goes up, so does the leakage current. To minimize power consumption, operating system 105 should select the hardware module having the lowest leakage current. Thus, it is known to test and characterize the leakage current from each hardware module so that operating system 105 is programmed to select for the module with lowest leakage current. Operating system 105 selects the units through a fixed input/output (I/O) interface 115. I/O interface 115 is deemed as “fixed” in that the identity of the units is static—operating system identifies them by their unit number, which does not change. If unit 0 has shown the least leakage, operating system 105 selects unit 0 to perform a task by transmitting the unit 0 address (which may comprise an interrupt) along with the task command to interface 115. Interface 115 then addresses unit 0 to perform the commanded task accordingly. Similarly, should operating system 105 select unit 3 for a task, interface 115 would receive the unit 3 address and select for unit 3 accordingly. But note that operating system 105 is open to inspection by interested parties. The identity of the leakiest hardware modules may comprise sensitive business information that would then be compromised by outsiders reading the programming code for operating system 105.
There is thus a need in the art for a flexible hardware module selection that isolates the operating system from an adaptive selection of the hardware modules based upon their performance characteristics.